// 给你一个整数数组 cost ，其中 `cost[i]` 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用，即可选择向上爬一个或者两个台阶。

// 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。

// 输入：cost = `[10, 15, 20]`
// 输出：15
// 解释：最低花费是从 `cost[1]` 开始，然后走两步即可到阶梯顶，一共花费 15 。
// 1. `dp[i]`表示第i台阶花费的最少体力
// 2. 递推公式：状态转义方程`dp[i] = Math.min(dp[i-1] + cost[i-1], dp[i-2] + cost[i-2])`
// 3. 初始化：`dp[0] = 0;dp[1] = 0`
// 4. 遍历顺序: 从前往后
// 5. 举例推导dp数组

function minCostClimbingStairs(cost) {
    let dp = []
    dp[0] = 0
    dp[1] = 0
    // cost数组的长度就是楼梯的总数，从第2层开始计算，可能从第1层，或者从第0层开始
    for (let i = 2; i <= cost.length; i++) {
        dp[i] = Math.min(dp[i-1] + cost[i-1], dp[i-2] + cost[i-2])     
    }
    
    return dp[cost.length]
}

// let cost = [10, 15, 20]
let cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1]
console.log(minCostClimbingStairs(cost))